<script>
    // 1.基本使用: 使用Symbol函数生成，生成独一无二的值
    let sym = Symbol();
    console.log(sym, typeof sym); // Symbol() 'symbol'

    let sym2 = Symbol();
    console.log(sym2); // Symbol()

    console.log(sym == sym2); // false 不相等，每次调用Symbol函数都生成不同的值

    // 2.Symbol不参与任何运算
    let s1 = Symbol('abc');
    console.log(s1); // Symbol(abc)
    // console.log( s1 + 10 ); // 报错： Cannot convert a Symbol value to a number

    // 3.作为对象的键名
    // let obj = {
    //     name: 'Tom',
    //     age: 10
    // }
    // obj.name = 'Jerry'; // 直接覆盖了
    // obj[Symbol('name')] = 'Jerry';
    // console.log(obj);

    let n = Symbol('name');
    let a = Symbol('age');
    let obj = {
        [n]: 'Jerry',
        [a]: 10
    }
    console.log(obj); // {Symbol(name): 'Jerry', Symbol(age): 10}
    obj[Symbol('name')] = '哈哈哈'; // 添加进obj   
    console.log(obj); // {Symbol(name): 'Jerry', Symbol(age): 10, Symbol(name): '哈哈哈'}

    obj[n] = '修改后的name';
    console.log(obj);
</script>